/**
 * 用户信息相关路由模块
 * 负责处理与用户个人信息相关的HTTP请求路由分发
 * 统一前缀：/api（由主应用挂载时指定）
 * @module routes/userinfo
 * @author 开发团队名称
 * @version 1.0.0
 * @since 2023-01-01
 */

// 引入Express框架核心模块
const express = require('express')

// 创建路由实例，用于定义用户信息相关的路由规则
// 路由实例将在主应用中被挂载到指定路径
const router = express.Router()

const expressJoi = require('@escook/express-joi')
const {update_user_info_schema,update_password_schema,update_avatar_schema} = require('../schema/user')

/**
 * 引入用户信息处理逻辑模块
 * 包含用户信息的查询、修改等业务逻辑实现
 * 遵循路由与业务逻辑分离原则，提高代码可维护性
 */
const userinfoHanler = require('../router_handler/userinfo')

/**
 * GET /userinfo - 获取当前登录用户的基本信息
 * @route GET /userinfo
 * @group 用户信息 - 与用户个人信息相关的操作
 * @access 私有 - 需要登录认证（JWT令牌验证）
 * @returns {Object} 200 - 成功响应，返回用户基本信息
 * @returns {Object} 401 - 未授权，用户未登录或令牌无效
 * @returns {Object} 500 - 服务器内部错误
 * @description 该接口用于获取当前登录用户的基本信息，包括用户名、头像、角色等
 *              前端需在请求头中携带Authorization: Bearer {token}
 */
router.get('/userinfo', userinfoHanler.getUserInfo)

router.post('/userinfo',expressJoi(update_user_info_schema),userinfoHanler.updatedUserInfo)

router.post('/updatepwd',expressJoi(update_password_schema),userinfoHanler.updatedPassword)

router.post('/update/avater',expressJoi(update_avatar_schema),userinfoHanler.updateAvater)

// 导出路由实例，供主应用挂载使用
module.exports = router